
-- 获取url参数列表
local uri_args = ngx.req.get_uri_args()
-- 获取参数
local product_id = uri_args["productId"]
local shop_id = uri_args["shopId"]

-- 定义后端的ip
local hosts={"192.168.60.103","192.168.60.102"}
-- 对商品 id 取模并计算 hash 值
local hash = ngx.crc32_long(productId)
hash = (hash % 2) + 1
-- 拼接 http 前缀
backend = "http://"..hosts[hash]
-- 获取到参数中的路径，比如要访问 /hello，这个例子中是需要传递访问路径的
local method = uri_args["method"]
-- 拼接具体的访问地址不带 host，如：/hello?productId=1
local request_body = "/"..method.."?productId="..product_id.."&shopId="..shop_id
-- 获取 http 包
local http = require("resty.http")
local http_client = http.new()

-- 访问
local resp,err = http_client:request_uri(backend, {
     method = "GET",
	 path = request_body,
	 keepalive=false
})

-- 如果没有响应则输出err信息
if not resp then
    ngx.say("request.error : ", err)
end

-- 有响应则输出
ngx.say(resp.body)

-- 关闭http连接
http_client:close()	
